package com.zkt.weichat.utils;

import java.util.Random;

/**
 * 验证码生成工具类（纯数字）
 * @author zkt
 */
public class CaptchaGeneratorUtil {
    // 禁止实例化
    private CaptchaGeneratorUtil() {}

    // 数字字符集
    private static final char[] NUMBER_TABLE = {'0','1','2','3','4','5','6','7','8','9'};
    
    // 默认长度
    private static final int DEFAULT_LENGTH = 6;
    
    // 线程安全的Random实例
    private static final Random random = new Random();

    /**
     * 生成6位数字验证码
     * @return 6位数字字符串
     */
    public static String generate() {
        return generate(DEFAULT_LENGTH);
    }

    /**
     * 自定义长度数字验证码生成
     * @param length 验证码位数（必须大于0）
     * @return 数字验证码字符串
     */
    public static String generate(int length) {
        if(length <= 0) {
            throw new IllegalArgumentException("验证码长度必须大于0");
        }
        
        StringBuilder sb = new StringBuilder(length);
        for(int i=0; i<length; i++){
            sb.append(NUMBER_TABLE[random.nextInt(10)]);
        }
        return sb.toString();
    }
}